// #include <iostream>
// #include <signal.h>
// #include <unistd.h>
// #include <cstdio>
// using namespace std;
// void PrintPending(sigset_t& sig)
// {
//     for(int i=31;i>=1;i--)
//     {
//         if(sigismember(&sig,i))
//             cout<<1;
//         else cout<<0;
//     }
//     cout<<endl;
// }
// int main()
// { 
//     sigset_t block,oblock;
//     sigemptyset(&block);
//     sigaddset(&block,SIGINT);
//     for(int i=1;i<=31;i++)
//     {
//         sigaddset(&block,i);
//     }
//     sigprocmask(SIG_SETMASK,&block,&oblock);
//     sigset_t sig;
//     while(true)
//     {
//         cout<<getpid()<<endl;
//         sigpending(&sig);
//         PrintPending(sig);
//         sleep(1);
//     }
//     return 0;
// }
#include <iostream>
#include <signal.h>
#include <unistd.h>
#include <cstdio>
using namespace std;
void PrintPending()
{
    sigset_t sig;
    sigpending(&sig);
    for(int i=31;i>=1;i--)
    {
        if(sigismember(&sig,i))
            cout<<1;
        else cout<<0;
    }
    cout<<endl;
}
void handler(int sig)
{
    PrintPending();
    exit(1);
}
int main()
{ 
    signal(2,handler);
    PrintPending();
    sleep(3);
    raise(2);
    return 0;
}